[INFO] cloning repository https://github.com/victorfaruna/Arbiter
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/victorfaruna/Arbiter" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fvictorfaruna%2FArbiter", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fvictorfaruna%2FArbiter'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] e8e97a6b31c6c8615a2b1e4c0db51e35112a39cf
[INFO] fixing victorfaruna/Arbiter against try#622891a4e29178280638a6b63a8908bde2c0c854+cargoflags=-Zfix-edition=end=2015,2024 for pr-157817-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fvictorfaruna%2FArbiter" "/workspace/builds/worker-5-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc2/source'...
[INFO] [stderr] done.
[INFO] [stderr] Updating files:  84% (1753/2073)
Updating files:  85% (1763/2073)
Updating files:  86% (1783/2073)
Updating files:  87% (1804/2073)
Updating files:  88% (1825/2073)
Updating files:  89% (1845/2073)
Updating files:  90% (1866/2073)
Updating files:  91% (1887/2073)
Updating files:  92% (1908/2073)
Updating files:  93% (1928/2073)
Updating files:  94% (1949/2073)
Updating files:  95% (1970/2073)
Updating files:  96% (1991/2073)
Updating files:  97% (2011/2073)
Updating files:  98% (2032/2073)
Updating files:  99% (2053/2073)
Updating files: 100% (2073/2073)
Updating files: 100% (2073/2073), done.
[INFO] started tweaking git repo https://github.com/victorfaruna/Arbiter
[INFO] finished tweaking git repo https://github.com/victorfaruna/Arbiter
[INFO] tweaked toml for git repo https://github.com/victorfaruna/Arbiter written to /workspace/builds/worker-5-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/victorfaruna/Arbiter on toolchain 622891a4e29178280638a6b63a8908bde2c0c854
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/victorfaruna/Arbiter already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded rust_decimal v1.40.0
[INFO] [stderr]   Downloaded toml_parser v1.0.8+spec-1.1.0
[INFO] [stderr]   Downloaded syn v2.0.115
[INFO] [stderr]   Downloaded native-tls v0.2.16
[INFO] [stderr]   Downloaded rust_decimal_macros v1.40.0
[INFO] [stderr]   Downloaded actix-ws v0.3.1
[INFO] [stderr]   Downloaded actix-web v4.12.1
[INFO] [stderr]   Downloaded actix-cors v0.7.1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3a6becf2bc8dde7f3fa57ede90e4f284e72d296796fc446bbb1e2c7cc0530151" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] c9ff268c6d1dbceb3894d2f7a79ce636351deb43c2a774befad638ae3c4a4260
[INFO] running `Command { std: "docker" "start" "c9ff268c6d1dbceb3894d2f7a79ce636351deb43c2a774befad638ae3c4a4260", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "c9ff268c6d1dbceb3894d2f7a79ce636351deb43c2a774befad638ae3c4a4260" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "c9ff268c6d1dbceb3894d2f7a79ce636351deb43c2a774befad638ae3c4a4260", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=" "-e" "RUSTDOCFLAGS=" "-w" "/opt/rustwide/workdir" "--user" "0:0" "c9ff268c6d1dbceb3894d2f7a79ce636351deb43c2a774befad638ae3c4a4260" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fix" "--allow-no-vcs" "--allow-dirty" "--frozen" "--all" "--all-targets" "--message-format=json" "-Zfix-edition=end=2015,2024", kill_on_drop: false }`
[INFO] [stderr] crater-edition-check: migrating to next edition
[INFO] [stderr]    Migrating core/Cargo.toml from 2021 edition to 2024
[INFO] [stderr]    Migrating api/Cargo.toml from 2021 edition to 2024
[INFO] [stderr]    Compiling unicode-ident v1.0.23
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking bitflags v2.11.0
[INFO] [stderr]     Checking crypto-common v0.1.7
[INFO] [stderr]     Checking openssl-sys v0.9.111
[INFO] [stderr]    Compiling openssl v0.10.75
[INFO] [stderr]    Compiling zstd-sys v2.0.16+zstd.1.5.7
[INFO] [stderr]    Compiling native-tls v0.2.16
[INFO] [stderr]     Checking getrandom v0.3.4
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]    Compiling zstd-safe v7.2.4
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling unicode-segmentation v1.12.0
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]     Checking sha1 v0.10.6
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking rand_core v0.9.5
[INFO] [stderr]     Checking serde_json v1.0.149
[INFO] [stderr]     Checking http v0.2.12
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling pin-project-lite v0.2.16
[INFO] [stderr]    Compiling convert_case v0.10.0
[INFO] [stderr]    Compiling time-core v0.1.8
[INFO] [stderr]    Compiling quote v1.0.44
[INFO] [stderr]    Compiling bytes v1.11.1
[INFO] [stderr]    Compiling num-conv v0.2.0
[INFO] [stderr]    Compiling syn v2.0.115
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]     Checking deranged v0.5.6
[INFO] [stderr]    Compiling time-macros v0.2.27
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling bytestring v1.5.0
[INFO] [stderr]     Checking actix-utils v3.0.1
[INFO] [stderr]    Compiling cookie v0.16.2
[INFO] [stderr]     Checking actix-service v2.0.3
[INFO] [stderr]    Compiling regex-lite v0.1.9
[INFO] [stderr]     Checking flate2 v1.1.9
[INFO] [stderr]     Checking rand v0.9.2
[INFO] [stderr]     Checking local-channel v0.1.5
[INFO] [stderr]     Checking http-body-util v0.1.3
[INFO] [stderr]     Checking time v0.3.47
[INFO] [stderr]     Checking socket2 v0.5.10
[INFO] [stderr]    Compiling rust_decimal v1.40.0
[INFO] [stderr]     Checking language-tags v0.3.2
[INFO] [stderr]     Checking foldhash v0.1.5
[INFO] [stderr]     Checking rustls-pki-types v1.14.0
[INFO] [stderr]     Checking matchers v0.2.0
[INFO] [stderr]     Checking tracing-log v0.2.0
[INFO] [stderr]     Checking hashbrown v0.14.5
[INFO] [stderr]     Checking impl-more v0.1.9
[INFO] [stderr]     Checking uuid v1.21.0
[INFO] [stderr]     Checking hmac v0.12.1
[INFO] [stderr]     Checking sha2 v0.10.9
[INFO] [stderr]     Checking dashmap v5.5.3
[INFO] [stderr]    Compiling actix-router v0.5.3
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]     Checking tokio v1.49.0
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]     Checking yoke v0.8.1
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]     Checking zerovec v0.11.5
[INFO] [stderr]     Checking zerotrie v0.2.3
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]     Checking zstd v0.13.3
[INFO] [stderr]    Compiling actix-macros v0.2.4
[INFO] [stderr]     Checking tinystr v0.8.2
[INFO] [stderr]     Checking icu_locale_core v2.1.1
[INFO] [stderr]     Checking potential_utf v0.1.4
[INFO] [stderr]     Checking icu_collections v2.1.1
[INFO] [stderr]    Compiling actix-web-codegen v4.3.0
[INFO] [stderr]     Checking icu_provider v2.1.1
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking tracing-subscriber v0.3.22
[INFO] [stderr]     Checking icu_normalizer v2.1.1
[INFO] [stderr]     Checking icu_properties v2.1.2
[INFO] [stderr]    Compiling rust_decimal_macros v1.40.0
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking derive_more v2.1.1
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking serde_spanned v0.6.9
[INFO] [stderr]     Checking toml_datetime v0.6.11
[INFO] [stderr]     Checking chrono v0.4.43
[INFO] [stderr]     Checking toml_edit v0.22.27
[INFO] [stderr]     Checking tungstenite v0.21.0
[INFO] [stderr]     Checking tokio-util v0.7.18
[INFO] [stderr]     Checking actix-rt v2.11.0
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]     Checking tower v0.5.3
[INFO] [stderr]     Checking actix-server v2.6.0
[INFO] [stderr]     Checking tokio-tungstenite v0.21.0
[INFO] [stderr]     Checking h2 v0.4.13
[INFO] [stderr]     Checking h2 v0.3.27
[INFO] [stderr]     Checking actix-codec v0.5.2
[INFO] [stderr]     Checking tower-http v0.6.8
[INFO] [stderr]     Checking toml v0.8.23
[INFO] [stderr]     Checking actix-http v3.11.2
[INFO] [stderr]     Checking hyper v1.8.1
[INFO] [stderr]     Checking hyper-util v0.1.20
[INFO] [stderr]     Checking actix-web v4.12.1
[INFO] [stderr]     Checking hyper-tls v0.6.0
[INFO] [stderr]     Checking reqwest v0.12.28
[INFO] [stderr]     Checking arb-core v0.1.0 (/opt/rustwide/workdir/core)
[INFO] [stderr]    Migrating core/src/lib.rs from 2021 edition to 2024
[INFO] [stderr]     Checking actix-ws v0.3.1
[INFO] [stderr]     Checking actix-cors v0.7.1
[INFO] [stderr]        Fixed core/src/executor.rs (1 fix)
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> core/src/arbitrage.rs:62:23
[INFO] [stdout]     |
[INFO] [stdout]  62 |                   match connector.subscribe_ticker(pair).await {
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-----
[INFO] [stdout]     |                         |                                |
[INFO] [stdout]     |                         |                                this value will be stored in a temporary; let us call it `#4`
[INFO] [stdout]     |                         |                                up until Edition 2021 `#4` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |                         |                                this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                         |                                `#1` will be dropped later as of Edition 2024
[INFO] [stdout]     |                         this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]     |                         up until Edition 2021 `#3` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |                         `__awaitee` calls a custom destructor
[INFO] [stdout]     |                         `__awaitee` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  71 | /                         tokio::spawn(async move {
[INFO] [stdout]  72 | |                             while let Some(ticker) = rx.recv().await {
[INFO] [stdout]  73 | |                                 // Update latest price
[INFO] [stdout]  74 | |                                 let key = (ticker.exchange, pair_str.clone());
[INFO] [stdout] ...   |
[INFO] [stdout]  89 | |                         });
[INFO] [stdout]     | |                          -
[INFO] [stdout]     | |                          |
[INFO] [stdout]     | |__________________________this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |                            `#2` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 100 |               }
[INFO] [stdout]     |               - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout] note: `#3` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/mpsc/chan.rs:489:1
[INFO] [stdout]     |
[INFO] [stdout] 489 | impl<T, S: Semaphore> Drop for Rx<T, S> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#4` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `__awaitee` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/mpsc/chan.rs:489:1
[INFO] [stdout]     |
[INFO] [stdout] 489 | impl<T, S: Semaphore> Drop for Rx<T, S> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/task/join.rs:353:1
[INFO] [stdout]     |
[INFO] [stdout] 353 | impl<T> Drop for JoinHandle<T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout]     = note: `--force-warn tail-expr-drop-order` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> core/src/exchange/bybit.rs:126:47
[INFO] [stdout]     |
[INFO] [stdout] 126 |                         while let Some(msg) = read.next().await {
[INFO] [stdout]     |                                        ---    ^^^^^^^^^^^^-----
[INFO] [stdout]     |                                        |      |           |
[INFO] [stdout]     |                                        |      |           this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                                        |      |           `#1` will be dropped later as of Edition 2024
[INFO] [stdout]     |                                        |      this value will be stored in a temporary; let us call it `#5`
[INFO] [stdout]     |                                        |      up until Edition 2021 `#5` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |                                        `msg` calls a custom destructor
[INFO] [stdout]     |                                        `msg` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 202 |                                     let mut w = ping_write.lock().await;
[INFO] [stdout]     |                                         -----   -----------------------
[INFO] [stdout]     |                                         |       |                 |
[INFO] [stdout]     |                                         |       |                 this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |                                         |       |                 `#2` will be dropped later as of Edition 2024
[INFO] [stdout]     |                                         |       `__awaitee` calls a custom destructor
[INFO] [stdout]     |                                         |       `__awaitee` will be dropped later as of Edition 2024
[INFO] [stdout]     |                                         `w` calls a custom destructor
[INFO] [stdout]     |                                         `w` will be dropped later as of Edition 2024
[INFO] [stdout] 203 |                                     let _ = w.send(Message::Pong(data)).await;
[INFO] [stdout]     |                                             ---------------------------------
[INFO] [stdout]     |                                             |                           |
[INFO] [stdout]     |                                             |                           this value will be stored in a temporary; let us call it `#4`
[INFO] [stdout]     |                                             |                           `#4` will be dropped later as of Edition 2024
[INFO] [stdout]     |                                             this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]     |                                             `#3` will be dropped later as of Edition 2024
[INFO] [stdout] 204 |                                 }
[INFO] [stdout] 205 |                                 Err(e) => {
[INFO] [stdout]     |                                     -
[INFO] [stdout]     |                                     |
[INFO] [stdout]     |                                     `e` calls a custom destructor
[INFO] [stdout]     |                                     `e` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 211 |                         }
[INFO] [stdout]     |                         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#5` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#5` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `msg` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `msg` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `w` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/mutex.rs:964:1
[INFO] [stdout]     |
[INFO] [stdout] 964 | impl<T: ?Sized> Drop for MutexGuard<'_, T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/mutex.rs:964:1
[INFO] [stdout]     |
[INFO] [stdout] 964 | impl<T: ?Sized> Drop for MutexGuard<'_, T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#3` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#3` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#4` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#4` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `e` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `e` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]     --> core/src/exchange/bybit.rs:126:47
[INFO] [stdout]      |
[INFO] [stdout]   88 |                 match connect_async(&url).await {
[INFO] [stdout]      |                       -------------------------
[INFO] [stdout]      |                       |                   |
[INFO] [stdout]      |                       |                   this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]      |                       |                   `#2` will be dropped later as of Edition 2024
[INFO] [stdout]      |                       this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]      |                       `#1` will be dropped later as of Edition 2024
[INFO] [stdout]      |                       `__awaitee` calls a custom destructor
[INFO] [stdout]      |                       `__awaitee` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]   91 |                         let (mut write, mut read) = ws_stream.split();
[INFO] [stdout]      |                              ---------  --------    -----------------
[INFO] [stdout]      |                              |          |           |
[INFO] [stdout]      |                              |          |           this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]      |                              |          |           `#3` will be dropped later as of Edition 2024
[INFO] [stdout]      |                              |          `read` calls a custom destructor
[INFO] [stdout]      |                              |          `read` will be dropped later as of Edition 2024
[INFO] [stdout]      |                              `write` calls a custom destructor
[INFO] [stdout]      |                              `write` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]   95 |                         if let Err(e) = write.send(Message::Text(sub_text.into())).await {
[INFO] [stdout]      |                                    -    ------------------------------------------------
[INFO] [stdout]      |                                    |    |                                          |
[INFO] [stdout]      |                                    |    |                                          this value will be stored in a temporary; let us call it `#5`
[INFO] [stdout]      |                                    |    |                                          `#5` will be dropped later as of Edition 2024
[INFO] [stdout]      |                                    |    this value will be stored in a temporary; let us call it `#4`
[INFO] [stdout]      |                                    |    `#4` will be dropped later as of Edition 2024
[INFO] [stdout]      |                                    `e` calls a custom destructor
[INFO] [stdout]      |                                    `e` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  102 |                         let ping_write = std::sync::Arc::new(tokio::sync::Mutex::new(write));
[INFO] [stdout]      |                             ----------
[INFO] [stdout]      |                             |
[INFO] [stdout]      |                             `ping_write` calls a custom destructor
[INFO] [stdout]      |                             `ping_write` will be dropped later as of Edition 2024
[INFO] [stdout]  103 |                         let ping_writer = ping_write.clone();
[INFO] [stdout]  104 |                         let ping_task = tokio::spawn(async move {
[INFO] [stdout]      |                             ---------
[INFO] [stdout]      |                             |
[INFO] [stdout]      |                             `ping_task` calls a custom destructor
[INFO] [stdout]      |                             `ping_task` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  126 |                         while let Some(msg) = read.next().await {
[INFO] [stdout]      |                                        ---    ^^^^^^^^^^^^-----
[INFO] [stdout]      |                                        |      |           |
[INFO] [stdout]      |                                        |      |           this value will be stored in a temporary; let us call it `#6`
[INFO] [stdout]      |                                        |      |           `#6` will be dropped later as of Edition 2024
[INFO] [stdout]      |                                        |      this value will be stored in a temporary; let us call it `#14`
[INFO] [stdout]      |                                        |      up until Edition 2021 `#14` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]      |                                        `msg` calls a custom destructor
[INFO] [stdout]      |                                        `msg` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  202 |                                     let mut w = ping_write.lock().await;
[INFO] [stdout]      |                                         -----   -----------------------
[INFO] [stdout]      |                                         |       |                 |
[INFO] [stdout]      |                                         |       |                 this value will be stored in a temporary; let us call it `#8`
[INFO] [stdout]      |                                         |       |                 `#8` will be dropped later as of Edition 2024
[INFO] [stdout]      |                                         |       this value will be stored in a temporary; let us call it `#7`
[INFO] [stdout]      |                                         |       `#7` will be dropped later as of Edition 2024
[INFO] [stdout]      |                                         `w` calls a custom destructor
[INFO] [stdout]      |                                         `w` will be dropped later as of Edition 2024
[INFO] [stdout]  203 |                                     let _ = w.send(Message::Pong(data)).await;
[INFO] [stdout]      |                                             ---------------------------------
[INFO] [stdout]      |                                             |                           |
[INFO] [stdout]      |                                             |                           this value will be stored in a temporary; let us call it `#10`
[INFO] [stdout]      |                                             |                           `#10` will be dropped later as of Edition 2024
[INFO] [stdout]      |                                             this value will be stored in a temporary; let us call it `#9`
[INFO] [stdout]      |                                             `#9` will be dropped later as of Edition 2024
[INFO] [stdout]  204 |                                 }
[INFO] [stdout]  205 |                                 Err(e) => {
[INFO] [stdout]      |                                     -
[INFO] [stdout]      |                                     |
[INFO] [stdout]      |                                     this value will be stored in a temporary; let us call it `#11`
[INFO] [stdout]      |                                     `#11` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  211 |                         }
[INFO] [stdout]      |                         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout] ...
[INFO] [stdout]  215 |                     Err(e) => {
[INFO] [stdout]      |                         -
[INFO] [stdout]      |                         |
[INFO] [stdout]      |                         this value will be stored in a temporary; let us call it `#12`
[INFO] [stdout]      |                         `#12` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  220 |                 tokio::time::sleep(tokio::time::Duration::from_secs(1)).await;
[INFO] [stdout]      |                 -------------------------------------------------------------
[INFO] [stdout]      |                 |
[INFO] [stdout]      |                 this value will be stored in a temporary; let us call it `#13`
[INFO] [stdout]      |                 `#13` will be dropped later as of Edition 2024
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#14` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#14` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]      |
[INFO] [stdout]  680 | impl Drop for Bytes {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]      |
[INFO] [stdout]  680 | impl Drop for Bytes {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/openssl-0.10.75/src/ssl/mod.rs:3564:1
[INFO] [stdout]      |
[INFO] [stdout] 3564 | impl<S> Drop for SslStream<S> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/io/poll_evented.rs:290:1
[INFO] [stdout]      |
[INFO] [stdout]  290 | impl<E: Source> Drop for PollEvented<E> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: `#2` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]      |
[INFO] [stdout]  680 | impl Drop for Bytes {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/openssl-0.10.75/src/ssl/mod.rs:3564:1
[INFO] [stdout]      |
[INFO] [stdout] 3564 | impl<S> Drop for SslStream<S> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/io/poll_evented.rs:290:1
[INFO] [stdout]      |
[INFO] [stdout]  290 | impl<E: Source> Drop for PollEvented<E> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `write` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/lock/bilock.rs:200:1
[INFO] [stdout]      |
[INFO] [stdout]  200 | impl<T> Drop for Inner<T> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `read` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/lock/bilock.rs:200:1
[INFO] [stdout]      |
[INFO] [stdout]  200 | impl<T> Drop for Inner<T> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#3` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/lock/bilock.rs:200:1
[INFO] [stdout]      |
[INFO] [stdout]  200 | impl<T> Drop for Inner<T> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: `#4` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#4` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]      |
[INFO] [stdout]  680 | impl Drop for Bytes {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: `#5` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#5` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]      |
[INFO] [stdout]  680 | impl Drop for Bytes {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: `e` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `e` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]      |
[INFO] [stdout]  680 | impl Drop for Bytes {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `ping_write` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/lock/bilock.rs:200:1
[INFO] [stdout]      |
[INFO] [stdout]  200 | impl<T> Drop for Inner<T> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `ping_task` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/task/join.rs:353:1
[INFO] [stdout]      |
[INFO] [stdout]  353 | impl<T> Drop for JoinHandle<T> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: `#6` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#6` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]      |
[INFO] [stdout]  680 | impl Drop for Bytes {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: `msg` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `msg` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]      |
[INFO] [stdout]  680 | impl Drop for Bytes {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `w` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/mutex.rs:964:1
[INFO] [stdout]      |
[INFO] [stdout]  964 | impl<T: ?Sized> Drop for MutexGuard<'_, T> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#8` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/mutex.rs:964:1
[INFO] [stdout]      |
[INFO] [stdout]  964 | impl<T: ?Sized> Drop for MutexGuard<'_, T> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: `#9` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#9` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]      |
[INFO] [stdout]  680 | impl Drop for Bytes {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: `#10` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#10` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]      |
[INFO] [stdout]  680 | impl Drop for Bytes {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: `#11` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#11` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]      |
[INFO] [stdout]  680 | impl Drop for Bytes {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: `#12` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#12` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]      |
[INFO] [stdout]  680 | impl Drop for Bytes {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#13` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/pin-project-lite-0.2.16/src/lib.rs:1313:9
[INFO] [stdout]      |
[INFO] [stdout] 1313 | /         impl $(<
[INFO] [stdout] 1314 | |             $( $lifetime $(: $lifetime_bound)? ,)*
[INFO] [stdout] 1315 | |             $( $generics
[INFO] [stdout] 1316 | |                 $(: $generics_bound)?
[INFO] [stdout] ...    |
[INFO] [stdout] 1319 | |             ),*
[INFO] [stdout] 1320 | |         >)? $crate::__private::Drop for $self_ty
[INFO] [stdout]      | |________________________________________________^
[INFO] [stdout]      |
[INFO] [stdout]     ::: /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/time/entry.rs:280:1
[INFO] [stdout]      |
[INFO] [stdout]  280 | / pin_project! {
[INFO] [stdout] ...    |
[INFO] [stdout]  310 | | }
[INFO] [stdout]      | |_- in this macro invocation
[INFO] [stdout]      = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]      = warning: this changes meaning in Rust 2024
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout]      = note: this warning originates in the macro `$crate::__pin_project_make_drop_impl` which comes from the expansion of the macro `pin_project` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> core/src/exchange/bitget.rs:118:47
[INFO] [stdout]     |
[INFO] [stdout] 118 |                         while let Some(msg) = read.next().await {
[INFO] [stdout]     |                                        ---    ^^^^^^^^^^^^-----
[INFO] [stdout]     |                                        |      |           |
[INFO] [stdout]     |                                        |      |           this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                                        |      |           `#1` will be dropped later as of Edition 2024
[INFO] [stdout]     |                                        |      this value will be stored in a temporary; let us call it `#5`
[INFO] [stdout]     |                                        |      up until Edition 2021 `#5` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |                                        `msg` calls a custom destructor
[INFO] [stdout]     |                                        `msg` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 198 |                                     let mut w = ping_write.lock().await;
[INFO] [stdout]     |                                         -----   -----------------------
[INFO] [stdout]     |                                         |       |                 |
[INFO] [stdout]     |                                         |       |                 this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |                                         |       |                 `#2` will be dropped later as of Edition 2024
[INFO] [stdout]     |                                         |       `__awaitee` calls a custom destructor
[INFO] [stdout]     |                                         |       `__awaitee` will be dropped later as of Edition 2024
[INFO] [stdout]     |                                         `w` calls a custom destructor
[INFO] [stdout]     |                                         `w` will be dropped later as of Edition 2024
[INFO] [stdout] 199 |                                     let _ = w.send(Message::Pong(data)).await;
[INFO] [stdout]     |                                             ---------------------------------
[INFO] [stdout]     |                                             |                           |
[INFO] [stdout]     |                                             |                           this value will be stored in a temporary; let us call it `#4`
[INFO] [stdout]     |                                             |                           `#4` will be dropped later as of Edition 2024
[INFO] [stdout]     |                                             this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]     |                                             `#3` will be dropped later as of Edition 2024
[INFO] [stdout] 200 |                                 }
[INFO] [stdout] 201 |                                 Err(e) => {
[INFO] [stdout]     |                                     -
[INFO] [stdout]     |                                     |
[INFO] [stdout]     |                                     `e` calls a custom destructor
[INFO] [stdout]     |                                     `e` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 207 |                         }
[INFO] [stdout]     |                         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#5` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#5` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `msg` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `msg` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `w` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/mutex.rs:964:1
[INFO] [stdout]     |
[INFO] [stdout] 964 | impl<T: ?Sized> Drop for MutexGuard<'_, T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/mutex.rs:964:1
[INFO] [stdout]     |
[INFO] [stdout] 964 | impl<T: ?Sized> Drop for MutexGuard<'_, T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#3` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#3` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#4` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#4` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `e` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `e` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]     --> core/src/exchange/bitget.rs:118:47
[INFO] [stdout]      |
[INFO] [stdout]   90 |                 match connect_async(&url).await {
[INFO] [stdout]      |                       -------------------------
[INFO] [stdout]      |                       |                   |
[INFO] [stdout]      |                       |                   this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]      |                       |                   `#2` will be dropped later as of Edition 2024
[INFO] [stdout]      |                       this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]      |                       `#1` will be dropped later as of Edition 2024
[INFO] [stdout]      |                       `__awaitee` calls a custom destructor
[INFO] [stdout]      |                       `__awaitee` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]   93 |                         let (mut write, mut read) = ws_stream.split();
[INFO] [stdout]      |                                         --------    -----------------
[INFO] [stdout]      |                                         |           |
[INFO] [stdout]      |                                         |           this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]      |                                         |           `#3` will be dropped later as of Edition 2024
[INFO] [stdout]      |                                         `read` calls a custom destructor
[INFO] [stdout]      |                                         `read` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]   97 |                         if let Err(e) = write.send(Message::Text(sub_text.into())).await {
[INFO] [stdout]      |                                         ------------------------------------------------
[INFO] [stdout]      |                                         |                                          |
[INFO] [stdout]      |                                         |                                          this value will be stored in a temporary; let us call it `#5`
[INFO] [stdout]      |                                         |                                          `#5` will be dropped later as of Edition 2024
[INFO] [stdout]      |                                         this value will be stored in a temporary; let us call it `#4`
[INFO] [stdout]      |                                         `#4` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  104 |                         let ping_write = std::sync::Arc::new(tokio::sync::Mutex::new(write));
[INFO] [stdout]      |                             ----------
[INFO] [stdout]      |                             |
[INFO] [stdout]      |                             `ping_write` calls a custom destructor
[INFO] [stdout]      |                             `ping_write` will be dropped later as of Edition 2024
[INFO] [stdout]  105 |                         let ping_writer = ping_write.clone();
[INFO] [stdout]  106 |                         let ping_task = tokio::spawn(async move {
[INFO] [stdout]      |                             ---------
[INFO] [stdout]      |                             |
[INFO] [stdout]      |                             `ping_task` calls a custom destructor
[INFO] [stdout]      |                             `ping_task` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  118 |                         while let Some(msg) = read.next().await {
[INFO] [stdout]      |                                        ---    ^^^^^^^^^^^^-----
[INFO] [stdout]      |                                        |      |           |
[INFO] [stdout]      |                                        |      |           this value will be stored in a temporary; let us call it `#6`
[INFO] [stdout]      |                                        |      |           `#6` will be dropped later as of Edition 2024
[INFO] [stdout]      |                                        |      this value will be stored in a temporary; let us call it `#13`
[INFO] [stdout]      |                                        |      up until Edition 2021 `#13` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]      |                                        `msg` calls a custom destructor
[INFO] [stdout]      |                                        `msg` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  198 |                                     let mut w = ping_write.lock().await;
[INFO] [stdout]      |                                         -----   -----------------------
[INFO] [stdout]      |                                         |       |                 |
[INFO] [stdout]      |                                         |       |                 this value will be stored in a temporary; let us call it `#8`
[INFO] [stdout]      |                                         |       |                 `#8` will be dropped later as of Edition 2024
[INFO] [stdout]      |                                         |       this value will be stored in a temporary; let us call it `#7`
[INFO] [stdout]      |                                         |       `#7` will be dropped later as of Edition 2024
[INFO] [stdout]      |                                         `w` calls a custom destructor
[INFO] [stdout]      |                                         `w` will be dropped later as of Edition 2024
[INFO] [stdout]  199 |                                     let _ = w.send(Message::Pong(data)).await;
[INFO] [stdout]      |                                             ---------------------------------
[INFO] [stdout]      |                                             |                           |
[INFO] [stdout]      |                                             |                           this value will be stored in a temporary; let us call it `#10`
[INFO] [stdout]      |                                             |                           `#10` will be dropped later as of Edition 2024
[INFO] [stdout]      |                                             this value will be stored in a temporary; let us call it `#9`
[INFO] [stdout]      |                                             `#9` will be dropped later as of Edition 2024
[INFO] [stdout]  200 |                                 }
[INFO] [stdout]  201 |                                 Err(e) => {
[INFO] [stdout]      |                                     -
[INFO] [stdout]      |                                     |
[INFO] [stdout]      |                                     `e` calls a custom destructor
[INFO] [stdout]      |                                     `e` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  207 |                         }
[INFO] [stdout]      |                         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout] ...
[INFO] [stdout]  211 |                     Err(e) => {
[INFO] [stdout]      |                         -
[INFO] [stdout]      |                         |
[INFO] [stdout]      |                         this value will be stored in a temporary; let us call it `#11`
[INFO] [stdout]      |                         `#11` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  216 |                 tokio::time::sleep(tokio::time::Duration::from_secs(1)).await;
[INFO] [stdout]      |                 -------------------------------------------------------------
[INFO] [stdout]      |                 |
[INFO] [stdout]      |                 this value will be stored in a temporary; let us call it `#12`
[INFO] [stdout]      |                 `#12` will be dropped later as of Edition 2024
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#13` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#13` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]      |
[INFO] [stdout]  680 | impl Drop for Bytes {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]      |
[INFO] [stdout]  680 | impl Drop for Bytes {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/openssl-0.10.75/src/ssl/mod.rs:3564:1
[INFO] [stdout]      |
[INFO] [stdout] 3564 | impl<S> Drop for SslStream<S> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/io/poll_evented.rs:290:1
[INFO] [stdout]      |
[INFO] [stdout]  290 | impl<E: Source> Drop for PollEvented<E> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: `#2` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]      |
[INFO] [stdout]  680 | impl Drop for Bytes {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/openssl-0.10.75/src/ssl/mod.rs:3564:1
[INFO] [stdout]      |
[INFO] [stdout] 3564 | impl<S> Drop for SslStream<S> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/io/poll_evented.rs:290:1
[INFO] [stdout]      |
[INFO] [stdout]  290 | impl<E: Source> Drop for PollEvented<E> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `read` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/lock/bilock.rs:200:1
[INFO] [stdout]      |
[INFO] [stdout]  200 | impl<T> Drop for Inner<T> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#3` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/lock/bilock.rs:200:1
[INFO] [stdout]      |
[INFO] [stdout]  200 | impl<T> Drop for Inner<T> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: `#4` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#4` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]      |
[INFO] [stdout]  680 | impl Drop for Bytes {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: `#5` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#5` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]      |
[INFO] [stdout]  680 | impl Drop for Bytes {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `ping_write` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/lock/bilock.rs:200:1
[INFO] [stdout]      |
[INFO] [stdout]  200 | impl<T> Drop for Inner<T> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `ping_task` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/task/join.rs:353:1
[INFO] [stdout]      |
[INFO] [stdout]  353 | impl<T> Drop for JoinHandle<T> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: `#6` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#6` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]      |
[INFO] [stdout]  680 | impl Drop for Bytes {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: `msg` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `msg` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]      |
[INFO] [stdout]  680 | impl Drop for Bytes {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `w` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/mutex.rs:964:1
[INFO] [stdout]      |
[INFO] [stdout]  964 | impl<T: ?Sized> Drop for MutexGuard<'_, T> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#8` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/mutex.rs:964:1
[INFO] [stdout]      |
[INFO] [stdout]  964 | impl<T: ?Sized> Drop for MutexGuard<'_, T> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: `#9` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#9` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]      |
[INFO] [stdout]  680 | impl Drop for Bytes {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: `#10` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#10` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]      |
[INFO] [stdout]  680 | impl Drop for Bytes {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: `e` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `e` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]      |
[INFO] [stdout]  680 | impl Drop for Bytes {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: `#11` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#11` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]      |
[INFO] [stdout]  680 | impl Drop for Bytes {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#12` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/pin-project-lite-0.2.16/src/lib.rs:1313:9
[INFO] [stdout]      |
[INFO] [stdout] 1313 | /         impl $(<
[INFO] [stdout] 1314 | |             $( $lifetime $(: $lifetime_bound)? ,)*
[INFO] [stdout] 1315 | |             $( $generics
[INFO] [stdout] 1316 | |                 $(: $generics_bound)?
[INFO] [stdout] ...    |
[INFO] [stdout] 1319 | |             ),*
[INFO] [stdout] 1320 | |         >)? $crate::__private::Drop for $self_ty
[INFO] [stdout]      | |________________________________________________^
[INFO] [stdout]      |
[INFO] [stdout]     ::: /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/time/entry.rs:280:1
[INFO] [stdout]      |
[INFO] [stdout]  280 | / pin_project! {
[INFO] [stdout] ...    |
[INFO] [stdout]  310 | | }
[INFO] [stdout]      | |_- in this macro invocation
[INFO] [stdout]      = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]      = warning: this changes meaning in Rust 2024
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout]      = note: this warning originates in the macro `$crate::__pin_project_make_drop_impl` which comes from the expansion of the macro `pin_project` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking arb-api v0.1.0 (/opt/rustwide/workdir/api)
[INFO] [stderr]    Migrating api/src/main.rs from 2021 edition to 2024
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> core/src/arbitrage.rs:62:23
[INFO] [stdout]     |
[INFO] [stdout]  62 |                   match connector.subscribe_ticker(pair).await {
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-----
[INFO] [stdout]     |                         |                                |
[INFO] [stdout]     |                         |                                this value will be stored in a temporary; let us call it `#4`
[INFO] [stdout]     |                         |                                up until Edition 2021 `#4` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |                         |                                this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                         |                                `#1` will be dropped later as of Edition 2024
[INFO] [stdout]     |                         this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]     |                         up until Edition 2021 `#3` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |                         `__awaitee` calls a custom destructor
[INFO] [stdout]     |                         `__awaitee` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  71 | /                         tokio::spawn(async move {
[INFO] [stdout]  72 | |                             while let Some(ticker) = rx.recv().await {
[INFO] [stdout]  73 | |                                 // Update latest price
[INFO] [stdout]  74 | |                                 let key = (ticker.exchange, pair_str.clone());
[INFO] [stdout] ...   |
[INFO] [stdout]  89 | |                         });
[INFO] [stdout]     | |                          -
[INFO] [stdout]     | |                          |
[INFO] [stdout]     | |__________________________this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |                            `#2` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 100 |               }
[INFO] [stdout]     |               - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout] note: `#3` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/mpsc/chan.rs:489:1
[INFO] [stdout]     |
[INFO] [stdout] 489 | impl<T, S: Semaphore> Drop for Rx<T, S> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#4` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: `__awaitee` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/mpsc/chan.rs:489:1
[INFO] [stdout]     |
[INFO] [stdout] 489 | impl<T, S: Semaphore> Drop for Rx<T, S> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/task/join.rs:353:1
[INFO] [stdout]     |
[INFO] [stdout] 353 | impl<T> Drop for JoinHandle<T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout]     = note: `--force-warn tail-expr-drop-order` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> core/src/exchange/bybit.rs:126:47
[INFO] [stdout]     |
[INFO] [stdout] 126 |                         while let Some(msg) = read.next().await {
[INFO] [stdout]     |                                        ---    ^^^^^^^^^^^^-----
[INFO] [stdout]     |                                        |      |           |
[INFO] [stdout]     |                                        |      |           this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                                        |      |           `#1` will be dropped later as of Edition 2024
[INFO] [stdout]     |                                        |      this value will be stored in a temporary; let us call it `#5`
[INFO] [stdout]     |                                        |      up until Edition 2021 `#5` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |                                        `msg` calls a custom destructor
[INFO] [stdout]     |                                        `msg` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 202 |                                     let mut w = ping_write.lock().await;
[INFO] [stdout]     |                                         -----   -----------------------
[INFO] [stdout]     |                                         |       |                 |
[INFO] [stdout]     |                                         |       |                 this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |                                         |       |                 `#2` will be dropped later as of Edition 2024
[INFO] [stdout]     |                                         |       `__awaitee` calls a custom destructor
[INFO] [stdout]     |                                         |       `__awaitee` will be dropped later as of Edition 2024
[INFO] [stdout]     |                                         `w` calls a custom destructor
[INFO] [stdout]     |                                         `w` will be dropped later as of Edition 2024
[INFO] [stdout] 203 |                                     let _ = w.send(Message::Pong(data)).await;
[INFO] [stdout]     |                                             ---------------------------------
[INFO] [stdout]     |                                             |                           |
[INFO] [stdout]     |                                             |                           this value will be stored in a temporary; let us call it `#4`
[INFO] [stdout]     |                                             |                           `#4` will be dropped later as of Edition 2024
[INFO] [stdout]     |                                             this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]     |                                             `#3` will be dropped later as of Edition 2024
[INFO] [stdout] 204 |                                 }
[INFO] [stdout] 205 |                                 Err(e) => {
[INFO] [stdout]     |                                     -
[INFO] [stdout]     |                                     |
[INFO] [stdout]     |                                     `e` calls a custom destructor
[INFO] [stdout]     |                                     `e` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 211 |                         }
[INFO] [stdout]     |                         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#5` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#5` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `msg` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `msg` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `w` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/mutex.rs:964:1
[INFO] [stdout]     |
[INFO] [stdout] 964 | impl<T: ?Sized> Drop for MutexGuard<'_, T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/mutex.rs:964:1
[INFO] [stdout]     |
[INFO] [stdout] 964 | impl<T: ?Sized> Drop for MutexGuard<'_, T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#3` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#3` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#4` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#4` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `e` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `e` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]     --> core/src/exchange/bybit.rs:126:47
[INFO] [stdout]      |
[INFO] [stdout]   88 |                 match connect_async(&url).await {
[INFO] [stdout]      |                       -------------------------
[INFO] [stdout]      |                       |                   |
[INFO] [stdout]      |                       |                   this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]      |                       |                   `#2` will be dropped later as of Edition 2024
[INFO] [stdout]      |                       this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]      |                       `#1` will be dropped later as of Edition 2024
[INFO] [stdout]      |                       `__awaitee` calls a custom destructor
[INFO] [stdout]      |                       `__awaitee` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]   91 |                         let (mut write, mut read) = ws_stream.split();
[INFO] [stdout]      |                              ---------  --------    -----------------
[INFO] [stdout]      |                              |          |           |
[INFO] [stdout]      |                              |          |           this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]      |                              |          |           `#3` will be dropped later as of Edition 2024
[INFO] [stdout]      |                              |          `read` calls a custom destructor
[INFO] [stdout]      |                              |          `read` will be dropped later as of Edition 2024
[INFO] [stdout]      |                              `write` calls a custom destructor
[INFO] [stdout]      |                              `write` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]   95 |                         if let Err(e) = write.send(Message::Text(sub_text.into())).await {
[INFO] [stdout]      |                                    -    ------------------------------------------------
[INFO] [stdout]      |                                    |    |                                          |
[INFO] [stdout]      |                                    |    |                                          this value will be stored in a temporary; let us call it `#5`
[INFO] [stdout]      |                                    |    |                                          `#5` will be dropped later as of Edition 2024
[INFO] [stdout]      |                                    |    this value will be stored in a temporary; let us call it `#4`
[INFO] [stdout]      |                                    |    `#4` will be dropped later as of Edition 2024
[INFO] [stdout]      |                                    `e` calls a custom destructor
[INFO] [stdout]      |                                    `e` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  102 |                         let ping_write = std::sync::Arc::new(tokio::sync::Mutex::new(write));
[INFO] [stdout]      |                             ----------
[INFO] [stdout]      |                             |
[INFO] [stdout]      |                             `ping_write` calls a custom destructor
[INFO] [stdout]      |                             `ping_write` will be dropped later as of Edition 2024
[INFO] [stdout]  103 |                         let ping_writer = ping_write.clone();
[INFO] [stdout]  104 |                         let ping_task = tokio::spawn(async move {
[INFO] [stdout]      |                             ---------
[INFO] [stdout]      |                             |
[INFO] [stdout]      |                             `ping_task` calls a custom destructor
[INFO] [stdout]      |                             `ping_task` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  126 |                         while let Some(msg) = read.next().await {
[INFO] [stdout]      |                                        ---    ^^^^^^^^^^^^-----
[INFO] [stdout]      |                                        |      |           |
[INFO] [stdout]      |                                        |      |           this value will be stored in a temporary; let us call it `#6`
[INFO] [stdout]      |                                        |      |           `#6` will be dropped later as of Edition 2024
[INFO] [stdout]      |                                        |      this value will be stored in a temporary; let us call it `#14`
[INFO] [stdout]      |                                        |      up until Edition 2021 `#14` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]      |                                        `msg` calls a custom destructor
[INFO] [stdout]      |                                        `msg` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  202 |                                     let mut w = ping_write.lock().await;
[INFO] [stdout]      |                                         -----   -----------------------
[INFO] [stdout]      |                                         |       |                 |
[INFO] [stdout]      |                                         |       |                 this value will be stored in a temporary; let us call it `#8`
[INFO] [stdout]      |                                         |       |                 `#8` will be dropped later as of Edition 2024
[INFO] [stdout]      |                                         |       this value will be stored in a temporary; let us call it `#7`
[INFO] [stdout]      |                                         |       `#7` will be dropped later as of Edition 2024
[INFO] [stdout]      |                                         `w` calls a custom destructor
[INFO] [stdout]      |                                         `w` will be dropped later as of Edition 2024
[INFO] [stdout]  203 |                                     let _ = w.send(Message::Pong(data)).await;
[INFO] [stdout]      |                                             ---------------------------------
[INFO] [stdout]      |                                             |                           |
[INFO] [stdout]      |                                             |                           this value will be stored in a temporary; let us call it `#10`
[INFO] [stdout]      |                                             |                           `#10` will be dropped later as of Edition 2024
[INFO] [stdout]      |                                             this value will be stored in a temporary; let us call it `#9`
[INFO] [stdout]      |                                             `#9` will be dropped later as of Edition 2024
[INFO] [stdout]  204 |                                 }
[INFO] [stdout]  205 |                                 Err(e) => {
[INFO] [stdout]      |                                     -
[INFO] [stdout]      |                                     |
[INFO] [stdout]      |                                     this value will be stored in a temporary; let us call it `#11`
[INFO] [stdout]      |                                     `#11` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  211 |                         }
[INFO] [stdout]      |                         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout] ...
[INFO] [stdout]  215 |                     Err(e) => {
[INFO] [stdout]      |                         -
[INFO] [stdout]      |                         |
[INFO] [stdout]      |                         this value will be stored in a temporary; let us call it `#12`
[INFO] [stdout]      |                         `#12` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  220 |                 tokio::time::sleep(tokio::time::Duration::from_secs(1)).await;
[INFO] [stdout]      |                 -------------------------------------------------------------
[INFO] [stdout]      |                 |
[INFO] [stdout]      |                 this value will be stored in a temporary; let us call it `#13`
[INFO] [stdout]      |                 `#13` will be dropped later as of Edition 2024
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#14` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#14` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]      |
[INFO] [stdout]  680 | impl Drop for Bytes {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]      |
[INFO] [stdout]  680 | impl Drop for Bytes {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/openssl-0.10.75/src/ssl/mod.rs:3564:1
[INFO] [stdout]      |
[INFO] [stdout] 3564 | impl<S> Drop for SslStream<S> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/io/poll_evented.rs:290:1
[INFO] [stdout]      |
[INFO] [stdout]  290 | impl<E: Source> Drop for PollEvented<E> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: `#2` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]      |
[INFO] [stdout]  680 | impl Drop for Bytes {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/openssl-0.10.75/src/ssl/mod.rs:3564:1
[INFO] [stdout]      |
[INFO] [stdout] 3564 | impl<S> Drop for SslStream<S> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/io/poll_evented.rs:290:1
[INFO] [stdout]      |
[INFO] [stdout]  290 | impl<E: Source> Drop for PollEvented<E> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `write` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/lock/bilock.rs:200:1
[INFO] [stdout]      |
[INFO] [stdout]  200 | impl<T> Drop for Inner<T> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `read` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/lock/bilock.rs:200:1
[INFO] [stdout]      |
[INFO] [stdout]  200 | impl<T> Drop for Inner<T> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#3` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/lock/bilock.rs:200:1
[INFO] [stdout]      |
[INFO] [stdout]  200 | impl<T> Drop for Inner<T> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: `#4` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#4` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]      |
[INFO] [stdout]  680 | impl Drop for Bytes {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: `#5` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#5` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]      |
[INFO] [stdout]  680 | impl Drop for Bytes {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: `e` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `e` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]      |
[INFO] [stdout]  680 | impl Drop for Bytes {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `ping_write` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/lock/bilock.rs:200:1
[INFO] [stdout]      |
[INFO] [stdout]  200 | impl<T> Drop for Inner<T> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `ping_task` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/task/join.rs:353:1
[INFO] [stdout]      |
[INFO] [stdout]  353 | impl<T> Drop for JoinHandle<T> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: `#6` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#6` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]      |
[INFO] [stdout]  680 | impl Drop for Bytes {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: `msg` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `msg` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]      |
[INFO] [stdout]  680 | impl Drop for Bytes {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `w` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/mutex.rs:964:1
[INFO] [stdout]      |
[INFO] [stdout]  964 | impl<T: ?Sized> Drop for MutexGuard<'_, T> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#8` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/mutex.rs:964:1
[INFO] [stdout]      |
[INFO] [stdout]  964 | impl<T: ?Sized> Drop for MutexGuard<'_, T> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: `#9` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#9` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]      |
[INFO] [stdout]  680 | impl Drop for Bytes {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: `#10` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#10` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]      |
[INFO] [stdout]  680 | impl Drop for Bytes {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: `#11` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#11` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]      |
[INFO] [stdout]  680 | impl Drop for Bytes {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: `#12` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#12` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]      |
[INFO] [stdout]  680 | impl Drop for Bytes {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#13` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/pin-project-lite-0.2.16/src/lib.rs:1313:9
[INFO] [stdout]      |
[INFO] [stdout] 1313 | /         impl $(<
[INFO] [stdout] 1314 | |             $( $lifetime $(: $lifetime_bound)? ,)*
[INFO] [stdout] 1315 | |             $( $generics
[INFO] [stdout] 1316 | |                 $(: $generics_bound)?
[INFO] [stdout] ...    |
[INFO] [stdout] 1319 | |             ),*
[INFO] [stdout] 1320 | |         >)? $crate::__private::Drop for $self_ty
[INFO] [stdout]      | |________________________________________________^
[INFO] [stdout]      |
[INFO] [stdout]     ::: /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/time/entry.rs:280:1
[INFO] [stdout]      |
[INFO] [stdout]  280 | / pin_project! {
[INFO] [stdout] ...    |
[INFO] [stdout]  310 | | }
[INFO] [stdout]      | |_- in this macro invocation
[INFO] [stdout]      = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]      = warning: this changes meaning in Rust 2024
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout]      = note: this warning originates in the macro `$crate::__pin_project_make_drop_impl` which comes from the expansion of the macro `pin_project` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> core/src/exchange/bitget.rs:118:47
[INFO] [stdout]     |
[INFO] [stdout] 118 |                         while let Some(msg) = read.next().await {
[INFO] [stdout]     |                                        ---    ^^^^^^^^^^^^-----
[INFO] [stdout]     |                                        |      |           |
[INFO] [stdout]     |                                        |      |           this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                                        |      |           `#1` will be dropped later as of Edition 2024
[INFO] [stdout]     |                                        |      this value will be stored in a temporary; let us call it `#5`
[INFO] [stdout]     |                                        |      up until Edition 2021 `#5` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |                                        `msg` calls a custom destructor
[INFO] [stdout]     |                                        `msg` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 198 |                                     let mut w = ping_write.lock().await;
[INFO] [stdout]     |                                         -----   -----------------------
[INFO] [stdout]     |                                         |       |                 |
[INFO] [stdout]     |                                         |       |                 this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |                                         |       |                 `#2` will be dropped later as of Edition 2024
[INFO] [stdout]     |                                         |       `__awaitee` calls a custom destructor
[INFO] [stdout]     |                                         |       `__awaitee` will be dropped later as of Edition 2024
[INFO] [stdout]     |                                         `w` calls a custom destructor
[INFO] [stdout]     |                                         `w` will be dropped later as of Edition 2024
[INFO] [stdout] 199 |                                     let _ = w.send(Message::Pong(data)).await;
[INFO] [stdout]     |                                             ---------------------------------
[INFO] [stdout]     |                                             |                           |
[INFO] [stdout]     |                                             |                           this value will be stored in a temporary; let us call it `#4`
[INFO] [stdout]     |                                             |                           `#4` will be dropped later as of Edition 2024
[INFO] [stdout]     |                                             this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]     |                                             `#3` will be dropped later as of Edition 2024
[INFO] [stdout] 200 |                                 }
[INFO] [stdout] 201 |                                 Err(e) => {
[INFO] [stdout]     |                                     -
[INFO] [stdout]     |                                     |
[INFO] [stdout]     |                                     `e` calls a custom destructor
[INFO] [stdout]     |                                     `e` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 207 |                         }
[INFO] [stdout]     |                         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#5` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#5` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `msg` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `msg` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `w` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/mutex.rs:964:1
[INFO] [stdout]     |
[INFO] [stdout] 964 | impl<T: ?Sized> Drop for MutexGuard<'_, T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/mutex.rs:964:1
[INFO] [stdout]     |
[INFO] [stdout] 964 | impl<T: ?Sized> Drop for MutexGuard<'_, T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#3` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#3` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#4` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#4` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `e` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `e` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]     --> core/src/exchange/bitget.rs:118:47
[INFO] [stdout]      |
[INFO] [stdout]   90 |                 match connect_async(&url).await {
[INFO] [stdout]      |                       -------------------------
[INFO] [stdout]      |                       |                   |
[INFO] [stdout]      |                       |                   this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]      |                       |                   `#2` will be dropped later as of Edition 2024
[INFO] [stdout]      |                       this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]      |                       `#1` will be dropped later as of Edition 2024
[INFO] [stdout]      |                       `__awaitee` calls a custom destructor
[INFO] [stdout]      |                       `__awaitee` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]   93 |                         let (mut write, mut read) = ws_stream.split();
[INFO] [stdout]      |                                         --------    -----------------
[INFO] [stdout]      |                                         |           |
[INFO] [stdout]      |                                         |           this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]      |                                         |           `#3` will be dropped later as of Edition 2024
[INFO] [stdout]      |                                         `read` calls a custom destructor
[INFO] [stdout]      |                                         `read` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]   97 |                         if let Err(e) = write.send(Message::Text(sub_text.into())).await {
[INFO] [stdout]      |                                         ------------------------------------------------
[INFO] [stdout]      |                                         |                                          |
[INFO] [stdout]      |                                         |                                          this value will be stored in a temporary; let us call it `#5`
[INFO] [stdout]      |                                         |                                          `#5` will be dropped later as of Edition 2024
[INFO] [stdout]      |                                         this value will be stored in a temporary; let us call it `#4`
[INFO] [stdout]      |                                         `#4` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  104 |                         let ping_write = std::sync::Arc::new(tokio::sync::Mutex::new(write));
[INFO] [stdout]      |                             ----------
[INFO] [stdout]      |                             |
[INFO] [stdout]      |                             `ping_write` calls a custom destructor
[INFO] [stdout]      |                             `ping_write` will be dropped later as of Edition 2024
[INFO] [stdout]  105 |                         let ping_writer = ping_write.clone();
[INFO] [stdout]  106 |                         let ping_task = tokio::spawn(async move {
[INFO] [stdout]      |                             ---------
[INFO] [stdout]      |                             |
[INFO] [stdout]      |                             `ping_task` calls a custom destructor
[INFO] [stdout]      |                             `ping_task` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  118 |                         while let Some(msg) = read.next().await {
[INFO] [stdout]      |                                        ---    ^^^^^^^^^^^^-----
[INFO] [stdout]      |                                        |      |           |
[INFO] [stdout]      |                                        |      |           this value will be stored in a temporary; let us call it `#6`
[INFO] [stdout]      |                                        |      |           `#6` will be dropped later as of Edition 2024
[INFO] [stdout]      |                                        |      this value will be stored in a temporary; let us call it `#13`
[INFO] [stdout]      |                                        |      up until Edition 2021 `#13` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]      |                                        `msg` calls a custom destructor
[INFO] [stdout]      |                                        `msg` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  198 |                                     let mut w = ping_write.lock().await;
[INFO] [stdout]      |                                         -----   -----------------------
[INFO] [stdout]      |                                         |       |                 |
[INFO] [stdout]      |                                         |       |                 this value will be stored in a temporary; let us call it `#8`
[INFO] [stdout]      |                                         |       |                 `#8` will be dropped later as of Edition 2024
[INFO] [stdout]      |                                         |       this value will be stored in a temporary; let us call it `#7`
[INFO] [stdout]      |                                         |       `#7` will be dropped later as of Edition 2024
[INFO] [stdout]      |                                         `w` calls a custom destructor
[INFO] [stdout]      |                                         `w` will be dropped later as of Edition 2024
[INFO] [stdout]  199 |                                     let _ = w.send(Message::Pong(data)).await;
[INFO] [stdout]      |                                             ---------------------------------
[INFO] [stdout]      |                                             |                           |
[INFO] [stdout]      |                                             |                           this value will be stored in a temporary; let us call it `#10`
[INFO] [stdout]      |                                             |                           `#10` will be dropped later as of Edition 2024
[INFO] [stdout]      |                                             this value will be stored in a temporary; let us call it `#9`
[INFO] [stdout]      |                                             `#9` will be dropped later as of Edition 2024
[INFO] [stdout]  200 |                                 }
[INFO] [stdout]  201 |                                 Err(e) => {
[INFO] [stdout]      |                                     -
[INFO] [stdout]      |                                     |
[INFO] [stdout]      |                                     `e` calls a custom destructor
[INFO] [stdout]      |                                     `e` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  207 |                         }
[INFO] [stdout]      |                         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout] ...
[INFO] [stdout]  211 |                     Err(e) => {
[INFO] [stdout]      |                         -
[INFO] [stdout]      |                         |
[INFO] [stdout]      |                         this value will be stored in a temporary; let us call it `#11`
[INFO] [stdout]      |                         `#11` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  216 |                 tokio::time::sleep(tokio::time::Duration::from_secs(1)).await;
[INFO] [stdout]      |                 -------------------------------------------------------------
[INFO] [stdout]      |                 |
[INFO] [stdout]      |                 this value will be stored in a temporary; let us call it `#12`
[INFO] [stdout]      |                 `#12` will be dropped later as of Edition 2024
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#13` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#13` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]      |
[INFO] [stdout]  680 | impl Drop for Bytes {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]      |
[INFO] [stdout]  680 | impl Drop for Bytes {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/openssl-0.10.75/src/ssl/mod.rs:3564:1
[INFO] [stdout]      |
[INFO] [stdout] 3564 | impl<S> Drop for SslStream<S> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/io/poll_evented.rs:290:1
[INFO] [stdout]      |
[INFO] [stdout]  290 | impl<E: Source> Drop for PollEvented<E> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: `#2` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]      |
[INFO] [stdout]  680 | impl Drop for Bytes {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/openssl-0.10.75/src/ssl/mod.rs:3564:1
[INFO] [stdout]      |
[INFO] [stdout] 3564 | impl<S> Drop for SslStream<S> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/io/poll_evented.rs:290:1
[INFO] [stdout]      |
[INFO] [stdout]  290 | impl<E: Source> Drop for PollEvented<E> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `read` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/lock/bilock.rs:200:1
[INFO] [stdout]      |
[INFO] [stdout]  200 | impl<T> Drop for Inner<T> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#3` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/lock/bilock.rs:200:1
[INFO] [stdout]      |
[INFO] [stdout]  200 | impl<T> Drop for Inner<T> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: `#4` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#4` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]      |
[INFO] [stdout]  680 | impl Drop for Bytes {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: `#5` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#5` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]      |
[INFO] [stdout]  680 | impl Drop for Bytes {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `ping_write` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/lock/bilock.rs:200:1
[INFO] [stdout]      |
[INFO] [stdout]  200 | impl<T> Drop for Inner<T> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `ping_task` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/task/join.rs:353:1
[INFO] [stdout]      |
[INFO] [stdout]  353 | impl<T> Drop for JoinHandle<T> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: `#6` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#6` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]      |
[INFO] [stdout]  680 | impl Drop for Bytes {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: `msg` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `msg` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]      |
[INFO] [stdout]  680 | impl Drop for Bytes {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `w` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/mutex.rs:964:1
[INFO] [stdout]      |
[INFO] [stdout]  964 | impl<T: ?Sized> Drop for MutexGuard<'_, T> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#8` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/mutex.rs:964:1
[INFO] [stdout]      |
[INFO] [stdout]  964 | impl<T: ?Sized> Drop for MutexGuard<'_, T> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: `#9` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#9` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]      |
[INFO] [stdout]  680 | impl Drop for Bytes {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: `#10` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#10` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]      |
[INFO] [stdout]  680 | impl Drop for Bytes {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: `e` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `e` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]      |
[INFO] [stdout]  680 | impl Drop for Bytes {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: `#11` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#11` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]      |
[INFO] [stdout]  680 | impl Drop for Bytes {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#12` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/pin-project-lite-0.2.16/src/lib.rs:1313:9
[INFO] [stdout]      |
[INFO] [stdout] 1313 | /         impl $(<
[INFO] [stdout] 1314 | |             $( $lifetime $(: $lifetime_bound)? ,)*
[INFO] [stdout] 1315 | |             $( $generics
[INFO] [stdout] 1316 | |                 $(: $generics_bound)?
[INFO] [stdout] ...    |
[INFO] [stdout] 1319 | |             ),*
[INFO] [stdout] 1320 | |         >)? $crate::__private::Drop for $self_ty
[INFO] [stdout]      | |________________________________________________^
[INFO] [stdout]      |
[INFO] [stdout]     ::: /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/time/entry.rs:280:1
[INFO] [stdout]      |
[INFO] [stdout]  280 | / pin_project! {
[INFO] [stdout] ...    |
[INFO] [stdout]  310 | | }
[INFO] [stdout]      | |_- in this macro invocation
[INFO] [stdout]      = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]      = warning: this changes meaning in Rust 2024
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout]      = note: this warning originates in the macro `$crate::__pin_project_make_drop_impl` which comes from the expansion of the macro `pin_project` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> api/src/routes.rs:17:5
[INFO] [stdout]     |
[INFO] [stdout]  15 |     let opps = state.opportunities.lock().await;
[INFO] [stdout]     |         ----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `opps` calls a custom destructor
[INFO] [stdout]     |         `opps` will be dropped later as of Edition 2024
[INFO] [stdout]  16 |     let list: Vec<_> = opps.iter().cloned().collect();
[INFO] [stdout]  17 |     HttpResponse::Ok().json(list)
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |     up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]  18 | }
[INFO] [stdout]     | - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/actix-http-3.11.2/src/responses/head.rs:159:1
[INFO] [stdout]     |
[INFO] [stdout] 159 | impl Drop for BoxedResponseHead {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `opps` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/mutex.rs:964:1
[INFO] [stdout]     |
[INFO] [stdout] 964 | impl<T: ?Sized> Drop for MutexGuard<'_, T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout]     = note: `--force-warn tail-expr-drop-order` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> api/src/routes.rs:23:5
[INFO] [stdout]     |
[INFO] [stdout]  22 |     let trades = state.trades.lock().await;
[INFO] [stdout]     |         ------
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `trades` calls a custom destructor
[INFO] [stdout]     |         `trades` will be dropped later as of Edition 2024
[INFO] [stdout]  23 |     HttpResponse::Ok().json(trades.clone())
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |     up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]  24 | }
[INFO] [stdout]     | - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/actix-http-3.11.2/src/responses/head.rs:159:1
[INFO] [stdout]     |
[INFO] [stdout] 159 | impl Drop for BoxedResponseHead {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `trades` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/mutex.rs:964:1
[INFO] [stdout]     |
[INFO] [stdout] 964 | impl<T: ?Sized> Drop for MutexGuard<'_, T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> api/src/routes.rs:64:5
[INFO] [stdout]     |
[INFO] [stdout]  36 |     let config = state.config.read().await;
[INFO] [stdout]     |         ------
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `config` calls a custom destructor
[INFO] [stdout]     |         `config` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  64 |     HttpResponse::Ok().json(balances)
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |     up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]  65 | }
[INFO] [stdout]     | - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/actix-http-3.11.2/src/responses/head.rs:159:1
[INFO] [stdout]     |
[INFO] [stdout] 159 | impl Drop for BoxedResponseHead {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `config` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/rwlock/read_guard.rs:178:1
[INFO] [stdout]     |
[INFO] [stdout] 178 | impl<'a, T: ?Sized> Drop for RwLockReadGuard<'a, T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> api/src/routes.rs:97:5
[INFO] [stdout]     |
[INFO] [stdout]  80 |     let mut config = state.config.write().await;
[INFO] [stdout]     |         ----------
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `config` calls a custom destructor
[INFO] [stdout]     |         `config` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  97 |     HttpResponse::Ok().json(serde_json::json!({
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |     up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 106 | }
[INFO] [stdout]     | - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/actix-http-3.11.2/src/responses/head.rs:159:1
[INFO] [stdout]     |
[INFO] [stdout] 159 | impl Drop for BoxedResponseHead {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `config` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/rwlock/write_guard.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | impl<'a, T: ?Sized> Drop for RwLockWriteGuard<'a, T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> api/src/state.rs:108:28
[INFO] [stdout]     |
[INFO] [stdout]  81 |         let config = self.config.read().await;
[INFO] [stdout]     |             ------
[INFO] [stdout]     |             |
[INFO] [stdout]     |             `config` calls a custom destructor
[INFO] [stdout]     |             `config` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 108 |             total_profit: *self.total_profit.lock().await,
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^-----
[INFO] [stdout]     |                            |                        |
[INFO] [stdout]     |                            |                        this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |                            |                        up until Edition 2021 `#2` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |                            this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                            up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 112 |     }
[INFO] [stdout]     |     - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/mutex.rs:964:1
[INFO] [stdout]     |
[INFO] [stdout] 964 | impl<T: ?Sized> Drop for MutexGuard<'_, T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `config` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/rwlock/read_guard.rs:178:1
[INFO] [stdout]     |
[INFO] [stdout] 178 | impl<'a, T: ?Sized> Drop for RwLockReadGuard<'a, T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> api/src/state.rs:108:53
[INFO] [stdout]     |
[INFO] [stdout]  81 |         let config = self.config.read().await;
[INFO] [stdout]     |             ------
[INFO] [stdout]     |             |
[INFO] [stdout]     |             `config` calls a custom destructor
[INFO] [stdout]     |             `config` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 108 |             total_profit: *self.total_profit.lock().await,
[INFO] [stdout]     |                                                     ^^^^^
[INFO] [stdout]     |                                                     |
[INFO] [stdout]     |                                                     this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                                                     up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 112 |     }
[INFO] [stdout]     |     - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout] note: `config` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/rwlock/read_guard.rs:178:1
[INFO] [stdout]     |
[INFO] [stdout] 178 | impl<'a, T: ?Sized> Drop for RwLockReadGuard<'a, T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> api/src/ws.rs:53:35
[INFO] [stdout]     |
[INFO] [stdout]  53 |         while let Some(Ok(msg)) = msg_stream.next().await {
[INFO] [stdout]     |                           ---     ^^^^^^^^^^^^^^^^^^-----
[INFO] [stdout]     |                           |       |                 |
[INFO] [stdout]     |                           |       |                 this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                           |       |                 `#1` will be dropped later as of Edition 2024
[INFO] [stdout]     |                           |       this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |                           |       up until Edition 2021 `#2` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |                           `msg` calls a custom destructor
[INFO] [stdout]     |                           `msg` will be dropped later as of Edition 2024
[INFO] [stdout]  54 |             match msg {
[INFO] [stdout]  55 |                 Message::Ping(bytes) => {
[INFO] [stdout]     |                               -----
[INFO] [stdout]     |                               |
[INFO] [stdout]     |                               `bytes` calls a custom destructor
[INFO] [stdout]     |                               `bytes` will be dropped later as of Edition 2024
[INFO] [stdout]  56 |                     if session.pong(&bytes).await.is_err() {
[INFO] [stdout]     |                        --------------------------
[INFO] [stdout]     |                        |
[INFO] [stdout]     |                        `__awaitee` calls a custom destructor
[INFO] [stdout]     |                        `__awaitee` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  66 |         }
[INFO] [stdout]     |         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `msg` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `bytes` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> api/src/main.rs:150:6
[INFO] [stdout]     |
[INFO] [stdout]  19 |   #[actix_web::main]
[INFO] [stdout]     |                    - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout] ...
[INFO] [stdout]  40 |       let app_state = Arc::new(AppState::new(config.clone()));
[INFO] [stdout]     |           ---------
[INFO] [stdout]     |           |
[INFO] [stdout]     |           `app_state` calls a custom destructor
[INFO] [stdout]     |           `app_state` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  43 |       let mut connectors: Vec<Arc<dyn ExchangeConnector>> = Vec::new();
[INFO] [stdout]     |           --------------
[INFO] [stdout]     |           |
[INFO] [stdout]     |           `connectors` calls a custom destructor
[INFO] [stdout]     |           `connectors` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  71 |       let (opp_tx, opp_rx) = tokio::sync::mpsc::unbounded_channel();
[INFO] [stdout]     |            ------
[INFO] [stdout]     |            |
[INFO] [stdout]     |            `opp_tx` calls a custom destructor
[INFO] [stdout]     |            `opp_tx` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  76 |       let detector = Arc::new(ArbitrageDetector::new(
[INFO] [stdout]     |           --------
[INFO] [stdout]     |           |
[INFO] [stdout]     |           `detector` calls a custom destructor
[INFO] [stdout]     |           `detector` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 135 | /     HttpServer::new(move || {
[INFO] [stdout] 136 | |         let cors = Cors::default()
[INFO] [stdout] 137 | |             .allow_any_origin()
[INFO] [stdout] 138 | |             .allow_any_method()
[INFO] [stdout] ...   |
[INFO] [stdout] 147 | |     })
[INFO] [stdout] 148 | |     .bind(("0.0.0.0", api_port))?
[INFO] [stdout]     | |                                 -
[INFO] [stdout]     | |                                 |
[INFO] [stdout]     | |_________________________________this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |                                   up until Edition 2021 `#2` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] 149 |       .run()
[INFO] [stdout] 150 |       .await
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout]     |        |
[INFO] [stdout]     |        this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |        up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/mpsc/chan.rs:225:1
[INFO] [stdout]     |
[INFO] [stdout] 225 | impl<T, S> Drop for Tx<T, S> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#2` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/mpsc/chan.rs:489:1
[INFO] [stdout]     |
[INFO] [stdout] 489 | impl<T, S: Semaphore> Drop for Rx<T, S> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/mpsc/chan.rs:225:1
[INFO] [stdout]     |
[INFO] [stdout] 225 | impl<T, S> Drop for Tx<T, S> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/std/src/os/fd/owned.rs:196:0
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/mpsc/chan.rs:225:1
[INFO] [stdout]     |
[INFO] [stdout] 225 | impl<T, S> Drop for Tx<T, S> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `app_state` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/mpsc/chan.rs:225:1
[INFO] [stdout]     |
[INFO] [stdout] 225 | impl<T, S> Drop for Tx<T, S> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `connectors` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `opp_tx` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/mpsc/chan.rs:225:1
[INFO] [stdout]     |
[INFO] [stdout] 225 | impl<T, S> Drop for Tx<T, S> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `detector` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/mpsc/chan.rs:225:1
[INFO] [stdout]     |
[INFO] [stdout] 225 | impl<T, S> Drop for Tx<T, S> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `detector` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/mpsc/chan.rs:225:1
[INFO] [stdout]     |
[INFO] [stdout] 225 | impl<T, S> Drop for Tx<T, S> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `detector` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> api/src/routes.rs:17:5
[INFO] [stdout]     |
[INFO] [stdout]  15 |     let opps = state.opportunities.lock().await;
[INFO] [stdout]     |         ----
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `opps` calls a custom destructor
[INFO] [stdout]     |         `opps` will be dropped later as of Edition 2024
[INFO] [stdout]  16 |     let list: Vec<_> = opps.iter().cloned().collect();
[INFO] [stdout]  17 |     HttpResponse::Ok().json(list)
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |     up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]  18 | }
[INFO] [stdout]     | - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/actix-http-3.11.2/src/responses/head.rs:159:1
[INFO] [stdout]     |
[INFO] [stdout] 159 | impl Drop for BoxedResponseHead {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `opps` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/mutex.rs:964:1
[INFO] [stdout]     |
[INFO] [stdout] 964 | impl<T: ?Sized> Drop for MutexGuard<'_, T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout]     = note: `--force-warn tail-expr-drop-order` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> api/src/routes.rs:23:5
[INFO] [stdout]     |
[INFO] [stdout]  22 |     let trades = state.trades.lock().await;
[INFO] [stdout]     |         ------
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `trades` calls a custom destructor
[INFO] [stdout]     |         `trades` will be dropped later as of Edition 2024
[INFO] [stdout]  23 |     HttpResponse::Ok().json(trades.clone())
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |     up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]  24 | }
[INFO] [stdout]     | - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/actix-http-3.11.2/src/responses/head.rs:159:1
[INFO] [stdout]     |
[INFO] [stdout] 159 | impl Drop for BoxedResponseHead {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `trades` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/mutex.rs:964:1
[INFO] [stdout]     |
[INFO] [stdout] 964 | impl<T: ?Sized> Drop for MutexGuard<'_, T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> api/src/routes.rs:64:5
[INFO] [stdout]     |
[INFO] [stdout]  36 |     let config = state.config.read().await;
[INFO] [stdout]     |         ------
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `config` calls a custom destructor
[INFO] [stdout]     |         `config` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  64 |     HttpResponse::Ok().json(balances)
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |     up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]  65 | }
[INFO] [stdout]     | - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/actix-http-3.11.2/src/responses/head.rs:159:1
[INFO] [stdout]     |
[INFO] [stdout] 159 | impl Drop for BoxedResponseHead {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `config` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/rwlock/read_guard.rs:178:1
[INFO] [stdout]     |
[INFO] [stdout] 178 | impl<'a, T: ?Sized> Drop for RwLockReadGuard<'a, T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> api/src/routes.rs:97:5
[INFO] [stdout]     |
[INFO] [stdout]  80 |     let mut config = state.config.write().await;
[INFO] [stdout]     |         ----------
[INFO] [stdout]     |         |
[INFO] [stdout]     |         `config` calls a custom destructor
[INFO] [stdout]     |         `config` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  97 |     HttpResponse::Ok().json(serde_json::json!({
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |     up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 106 | }
[INFO] [stdout]     | - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/actix-http-3.11.2/src/responses/head.rs:159:1
[INFO] [stdout]     |
[INFO] [stdout] 159 | impl Drop for BoxedResponseHead {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `config` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/rwlock/write_guard.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | impl<'a, T: ?Sized> Drop for RwLockWriteGuard<'a, T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> api/src/state.rs:108:28
[INFO] [stdout]     |
[INFO] [stdout]  81 |         let config = self.config.read().await;
[INFO] [stdout]     |             ------
[INFO] [stdout]     |             |
[INFO] [stdout]     |             `config` calls a custom destructor
[INFO] [stdout]     |             `config` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 108 |             total_profit: *self.total_profit.lock().await,
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^-----
[INFO] [stdout]     |                            |                        |
[INFO] [stdout]     |                            |                        this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |                            |                        up until Edition 2021 `#2` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |                            this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                            up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 112 |     }
[INFO] [stdout]     |     - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/mutex.rs:964:1
[INFO] [stdout]     |
[INFO] [stdout] 964 | impl<T: ?Sized> Drop for MutexGuard<'_, T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `config` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/rwlock/read_guard.rs:178:1
[INFO] [stdout]     |
[INFO] [stdout] 178 | impl<'a, T: ?Sized> Drop for RwLockReadGuard<'a, T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> api/src/state.rs:108:53
[INFO] [stdout]     |
[INFO] [stdout]  81 |         let config = self.config.read().await;
[INFO] [stdout]     |             ------
[INFO] [stdout]     |             |
[INFO] [stdout]     |             `config` calls a custom destructor
[INFO] [stdout]     |             `config` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 108 |             total_profit: *self.total_profit.lock().await,
[INFO] [stdout]     |                                                     ^^^^^
[INFO] [stdout]     |                                                     |
[INFO] [stdout]     |                                                     this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                                                     up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 112 |     }
[INFO] [stdout]     |     - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout] note: `config` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/rwlock/read_guard.rs:178:1
[INFO] [stdout]     |
[INFO] [stdout] 178 | impl<'a, T: ?Sized> Drop for RwLockReadGuard<'a, T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> api/src/ws.rs:53:35
[INFO] [stdout]     |
[INFO] [stdout]  53 |         while let Some(Ok(msg)) = msg_stream.next().await {
[INFO] [stdout]     |                           ---     ^^^^^^^^^^^^^^^^^^-----
[INFO] [stdout]     |                           |       |                 |
[INFO] [stdout]     |                           |       |                 this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                           |       |                 `#1` will be dropped later as of Edition 2024
[INFO] [stdout]     |                           |       this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |                           |       up until Edition 2021 `#2` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |                           `msg` calls a custom destructor
[INFO] [stdout]     |                           `msg` will be dropped later as of Edition 2024
[INFO] [stdout]  54 |             match msg {
[INFO] [stdout]  55 |                 Message::Ping(bytes) => {
[INFO] [stdout]     |                               -----
[INFO] [stdout]     |                               |
[INFO] [stdout]     |                               `bytes` calls a custom destructor
[INFO] [stdout]     |                               `bytes` will be dropped later as of Edition 2024
[INFO] [stdout]  56 |                     if session.pong(&bytes).await.is_err() {
[INFO] [stdout]     |                        --------------------------
[INFO] [stdout]     |                        |
[INFO] [stdout]     |                        `__awaitee` calls a custom destructor
[INFO] [stdout]     |                        `__awaitee` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  66 |         }
[INFO] [stdout]     |         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `msg` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `bytes` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> api/src/main.rs:150:6
[INFO] [stdout]     |
[INFO] [stdout]  19 |   #[actix_web::main]
[INFO] [stdout]     |                    - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout] ...
[INFO] [stdout]  40 |       let app_state = Arc::new(AppState::new(config.clone()));
[INFO] [stdout]     |           ---------
[INFO] [stdout]     |           |
[INFO] [stdout]     |           `app_state` calls a custom destructor
[INFO] [stdout]     |           `app_state` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  43 |       let mut connectors: Vec<Arc<dyn ExchangeConnector>> = Vec::new();
[INFO] [stdout]     |           --------------
[INFO] [stdout]     |           |
[INFO] [stdout]     |           `connectors` calls a custom destructor
[INFO] [stdout]     |           `connectors` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  71 |       let (opp_tx, opp_rx) = tokio::sync::mpsc::unbounded_channel();
[INFO] [stdout]     |            ------
[INFO] [stdout]     |            |
[INFO] [stdout]     |            `opp_tx` calls a custom destructor
[INFO] [stdout]     |            `opp_tx` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  76 |       let detector = Arc::new(ArbitrageDetector::new(
[INFO] [stdout]     |           --------
[INFO] [stdout]     |           |
[INFO] [stdout]     |           `detector` calls a custom destructor
[INFO] [stdout]     |           `detector` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 135 | /     HttpServer::new(move || {
[INFO] [stdout] 136 | |         let cors = Cors::default()
[INFO] [stdout] 137 | |             .allow_any_origin()
[INFO] [stdout] 138 | |             .allow_any_method()
[INFO] [stdout] ...   |
[INFO] [stdout] 147 | |     })
[INFO] [stdout] 148 | |     .bind(("0.0.0.0", api_port))?
[INFO] [stdout]     | |                                 -
[INFO] [stdout]     | |                                 |
[INFO] [stdout]     | |_________________________________this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |                                   up until Edition 2021 `#2` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] 149 |       .run()
[INFO] [stdout] 150 |       .await
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout]     |        |
[INFO] [stdout]     |        this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |        up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/mpsc/chan.rs:225:1
[INFO] [stdout]     |
[INFO] [stdout] 225 | impl<T, S> Drop for Tx<T, S> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#2` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/mpsc/chan.rs:489:1
[INFO] [stdout]     |
[INFO] [stdout] 489 | impl<T, S: Semaphore> Drop for Rx<T, S> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/mpsc/chan.rs:225:1
[INFO] [stdout]     |
[INFO] [stdout] 225 | impl<T, S> Drop for Tx<T, S> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/std/src/os/fd/owned.rs:196:0
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/mpsc/chan.rs:225:1
[INFO] [stdout]     |
[INFO] [stdout] 225 | impl<T, S> Drop for Tx<T, S> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `app_state` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/mpsc/chan.rs:225:1
[INFO] [stdout]     |
[INFO] [stdout] 225 | impl<T, S> Drop for Tx<T, S> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `connectors` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `opp_tx` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/mpsc/chan.rs:225:1
[INFO] [stdout]     |
[INFO] [stdout] 225 | impl<T, S> Drop for Tx<T, S> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `detector` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/mpsc/chan.rs:225:1
[INFO] [stdout]     |
[INFO] [stdout] 225 | impl<T, S> Drop for Tx<T, S> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `detector` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/mpsc/chan.rs:225:1
[INFO] [stdout]     |
[INFO] [stdout] 225 | impl<T, S> Drop for Tx<T, S> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `detector` may invoke a custom destructor because it contains a trait object
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 46s
[INFO] [stderr] crater-edition-check: arb-core v0.1.0 (/opt/rustwide/workdir/core) updating edition from 2021 to 2024
[INFO] [stderr] crater-edition-check: arb-api v0.1.0 (/opt/rustwide/workdir/api) updating edition from 2021 to 2024
[INFO] [stderr]     Checking arb-core v0.1.0 (/opt/rustwide/workdir/core)
[INFO] [stdout] warning: unused import: `debug`
[INFO] [stdout]  --> core/src/exchange/bybit.rs:8:15
[INFO] [stdout]   |
[INFO] [stdout] 8 | use tracing::{debug, error, info, warn};
[INFO] [stdout]   |               ^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `debug`
[INFO] [stdout]  --> core/src/exchange/bitget.rs:8:15
[INFO] [stdout]   |
[INFO] [stdout] 8 | use tracing::{debug, error, info, warn};
[INFO] [stdout]   |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `debug`
[INFO] [stdout]  --> core/src/exchange/bybit.rs:8:15
[INFO] [stdout]   |
[INFO] [stdout] 8 | use tracing::{debug, error, info, warn};
[INFO] [stdout]   |               ^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `debug`
[INFO] [stdout]  --> core/src/exchange/bitget.rs:8:15
[INFO] [stdout]   |
[INFO] [stdout] 8 | use tracing::{debug, error, info, warn};
[INFO] [stdout]   |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BybitWsResponse` is never constructed
[INFO] [stdout]   --> core/src/exchange/bybit.rs:45:8
[INFO] [stdout]    |
[INFO] [stdout] 45 | struct BybitWsResponse {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BybitTickerData` is never constructed
[INFO] [stdout]   --> core/src/exchange/bybit.rs:54:8
[INFO] [stdout]    |
[INFO] [stdout] 54 | struct BybitTickerData {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BitgetWsResponse` is never constructed
[INFO] [stdout]   --> core/src/exchange/bitget.rs:46:8
[INFO] [stdout]    |
[INFO] [stdout] 46 | struct BitgetWsResponse {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BitgetTickerData` is never constructed
[INFO] [stdout]   --> core/src/exchange/bitget.rs:51:8
[INFO] [stdout]    |
[INFO] [stdout] 51 | struct BitgetTickerData {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking arb-api v0.1.0 (/opt/rustwide/workdir/api)
[INFO] [stdout] warning: struct `BybitWsResponse` is never constructed
[INFO] [stdout]   --> core/src/exchange/bybit.rs:45:8
[INFO] [stdout]    |
[INFO] [stdout] 45 | struct BybitWsResponse {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BybitTickerData` is never constructed
[INFO] [stdout]   --> core/src/exchange/bybit.rs:54:8
[INFO] [stdout]    |
[INFO] [stdout] 54 | struct BybitTickerData {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BitgetWsResponse` is never constructed
[INFO] [stdout]   --> core/src/exchange/bitget.rs:46:8
[INFO] [stdout]    |
[INFO] [stdout] 46 | struct BitgetWsResponse {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BitgetTickerData` is never constructed
[INFO] [stdout]   --> core/src/exchange/bitget.rs:51:8
[INFO] [stdout]    |
[INFO] [stdout] 51 | struct BitgetTickerData {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 51s
[INFO] [stderr] crater-edition-check all packages now at latest edition
[INFO] [stderr] crater-edition-check: all finished
[INFO] running `Command { std: "docker" "inspect" "c9ff268c6d1dbceb3894d2f7a79ce636351deb43c2a774befad638ae3c4a4260", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c9ff268c6d1dbceb3894d2f7a79ce636351deb43c2a774befad638ae3c4a4260", kill_on_drop: false }`
[INFO] [stdout] c9ff268c6d1dbceb3894d2f7a79ce636351deb43c2a774befad638ae3c4a4260
